package dao;

import java.util.List;

import model.Angebotstyp;
import model.TypStatus;

import org.springframework.orm.hibernate3.HibernateTemplate;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

/**
 * Diese Klasse zeigt den Verfügbarkeitszustand der möglichen Angebotstyp dar.
 * z.B. belegt, vielleicht verfügbar, verfügbar, nicht verfügbar
 */

public class TypStatusDao extends HibernateDaoSupport {

	/**
	 * Speichert einen {@link TypStatus} in der Datenbank.
	 * 
	 * @param Bezeichnung
	 * 
	 */
	public void create(String bezeichnung) {
		TypStatus ts = new TypStatus();
		ts.setBezeichnung(bezeichnung);
		save(ts);
	}

	/**
	 * Erzeugt o. Aendert einen TypStatus zu einem {@link Angebotstyp} - Objekt
	 * 
	 * @param {@link TypStatus}
	 * @return {@link TypStatus}
	 */
	public TypStatus save(TypStatus typStatus) {
		HibernateTemplate template = getHibernateTemplate();
		template.saveOrUpdate(typStatus);
		return typStatus;
	}

	/**
	 * Belegt DB mit Standardwerten
	 * 
	 */
	public void createDefaultValues() {
		save(new TypStatus(1, "belegt"));
		save(new TypStatus(2, "vielleicht verfügbar"));
		save(new TypStatus(3, "verfügbar"));
		save(new TypStatus(4, "nicht verfügbar"));
	}

	/**
	 * Liefert das Objekt {@link TypStatus} zurueck mit den entsprechende,
	 * uebergebender Id
	 * 
	 * @return {@link TypStatus}
	 */
	public TypStatus findById(int id) {
		HibernateTemplate template = getHibernateTemplate();
		return (TypStatus) template.get(TypStatus.class, id);
	}

	/**
	 * Liefert alle Typstati eines {@link Angebotstyp} - Objektes zurueck
	 * 
	 * @return alle Typstati
	 */
	@SuppressWarnings("unchecked")
	public List<TypStatus> findAll() {
		HibernateTemplate template = getHibernateTemplate();
		@SuppressWarnings("rawtypes")
		List results = template.loadAll(TypStatus.class);
		return results;
	}
}
